package com.maiji.cloud.service;

import java.util.List;

import com.maiji.cloud.request.BaseDataReqDto;
import com.maiji.cloud.request.shopingmall.AddExchangeLogReqDto;
import com.maiji.cloud.request.shopingmall.GetExchangeLogReqDto;
import com.maiji.cloud.response.BaseDataResDto;
import com.maiji.cloud.response.BaseResDto;
import com.maiji.cloud.response.shopingmall.FreeDiscountCouponListResDto;
import com.maiji.cloud.response.shopingmall.GetDiscountCouponListResData;
import com.maiji.cloud.response.shopingmall.GetDiscountCouponListResDto;
import com.maiji.cloud.response.shopingmall.GetExchangeLogResDto;
import com.maiji.cloud.response.shopingmall.HaveDiscountCouponListResData;

/**
 * 
 * Description:  
 * @author zhanglr  
 * @date 2019年6月24日
 */
public interface CouponsService {

	/**
	 * 获取可兑换的优惠券
	 * @return
	 */
	GetDiscountCouponListResDto getDiscountCouponList();

	/**
	 * 获取用户的兑换记录
	 * @param getExchangeLogReqDto
	 * @return
	 */
	GetExchangeLogResDto getExchangeLogList(GetExchangeLogReqDto getExchangeLogReqDto);

	/**
	 * 用户兑换商品或优惠券
	 * @param param
	 * @return
	 */
	BaseDataResDto addExchangeLog(AddExchangeLogReqDto param);

	/**
	 * 
	 * @param money
	 * @param maijiToken
	 * @return
	 */
	BaseDataResDto<List<GetDiscountCouponListResData>> getUsableDiscountCouponList(Double money,String maijiToken);

	/**
	 * 获取免费优惠券列表
	 * @param maijiToken
	 * @return
	 */
	FreeDiscountCouponListResDto getfreeDiscountCouponList(Double money);

	/**
	 * 未领取优惠券列表
	 * @param maney
	 * @param maijiToken
	 * @return
	 */
	BaseDataResDto<List<GetDiscountCouponListResData>> noPossessDiscountCouponList(Double maney, String maijiToken);

    /**
     * 检查优惠券在当前购物金额下是否可用
     * @param money
     * @param exchangeId
     * @return
     */
    GetDiscountCouponListResData checkCouponUseable (Double money, String exchangeId, String token);
    /**
	 * 1：未使用，2：已使用：3：已过期优惠券列表
	 * @param type
	 * @param maijiToken
	 * @return
	 */
	BaseDataResDto<List<HaveDiscountCouponListResData>> getHaveDiscountCouponList( BaseDataReqDto<Integer> param , String maijiToken);



}
